#ifndef IFUNCLINE_H
#define IFUNCLINE_H

#include "IFunction.h"
#include "IOperator.h"

class IFuncLine
{
    private:
        // Ponteiros para os nós da lista:
        IOperator *inicio;
        IOperator *fim;
        // Função para adicionar um nó no final da lista:
        void lista_adicionar(IOperator *novo);

    public:
        // Construtor:
        IFuncLine();

        // Adiciona a função 'f' na fila de funções. Retorna um operador que contém esta função
        IOperator *addFunction(IFunction *f);

        // Adiciona uma função de impressão na fila de funções
        void addPrint();

        // Roda as funções desta funcline na ordem em que foram inseridas e retorna o último valor calculado
        int runFuncLine(int x);
};

#endif // IFUNCLINE_H
